package com.yidu.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.yidu.action.vo.ListenBillOfMaterialVo;
import com.yidu.dao.ListenBillOfMaterialMapper;
import com.yidu.dao.ListenRawstockStockMapper;
import com.yidu.domain.ListenBillOfMaterial;
import com.yidu.domain.ListenRawstockStock;
import com.yidu.service.ListenBillOfMaterialService;

/**
 * @title 物料清单Service实现类
 * @author 江宇
 * @dateTime 2019年1月14日
 */
@Service
public class ListenBillOfMaterialServiceImpl implements ListenBillOfMaterialService {
	
	@Resource
	ListenBillOfMaterialMapper dao;
	
	@Resource
	ListenRawstockStockMapper rsDao;
	
	 /**
     * @title 查询物料清单 
     * @param Map
     * @return List
     * @author 江宇
     * @dateTime 2018年12月12日
     * @versions 1.0
     */
	@Override
	public List<ListenBillOfMaterial> bomFindAll(Map<String, Object> map) {
		 
		return dao.bomFindAll(map);
	}
	
	/**
     * @title 增加物料清单
     * @param ListenBillOfMaterial
     * @return int
     * @author 江宇
     * @dateTime 2018年12月14日
     * @versions 1.0
     */
	@Override
	public int addBom(ListenBillOfMaterial bom) {
		 
		return dao.insertSelective(bom);
	}
	
	 /**
     * @title 根据ID删除物料清单
     * @param String
     * @return int
     * @author 江宇
     * @dateTime 2018年12月14日
     * @versions 1.0
     */
	@Override
	public int deleteBybomId(String bomId) {
		 
		return dao.deleteByPrimaryKey(bomId);
	}
	
	/**
     * @title 生产检查材料库存 
     * @param String
     * @return List
     * @author 江宇
     * @dateTime 2018年12月24日
     * @versions 1.0
     */
	@Override
	public List<ListenBillOfMaterialVo> inspectStock(String muId) {
		//按#拆分前台传来的乐器ID
		String muIds[]=muId.split("#");
		//创建物料清单VoList集合
		List<ListenBillOfMaterialVo> bofVoList=new ArrayList<>();
		//循环拆分后的乐器ID数组
		for (int i = 0; i < muIds.length; i++) {
			//创建物料清单Map
			Map<String, Object> bofMap=new HashMap<>();
			//乐器ID赋值
			bofMap.put("muId", muIds[i].split(",")[0]);
			//调用查询物料清单的方法
			List<ListenBillOfMaterial> bofList=dao.bomFindAll(bofMap);
			//循环查询的物料清单List集合
			for (ListenBillOfMaterial listenBillOfMaterial : bofList) {
				//创建物料清单Vo类对象
				ListenBillOfMaterialVo bofVo=new ListenBillOfMaterialVo();
				//乐器名称赋值
				bofVo.setMuName(muIds[i].split(",")[1]);
				//材料名称赋值
				bofVo.setRawstockName(listenBillOfMaterial.getRawstockName());
				//取到制造乐器所需要的材料(材料数量*乐器数量)
				bofVo.setProductionNumber(listenBillOfMaterial.getBomNumber()*Integer.valueOf(muIds[i].split(",")[2]));
				//创建材料库存Map集合
				Map<String, Object> rsMap=new HashMap<>();
				//材料ID赋值
				rsMap.put("rawstockId", listenBillOfMaterial.getRawstockId());
				//调用查询材料库存的方法
				List<ListenRawstockStock> rtList=rsDao.findRawstockStock(rsMap);
				//循环查询的材料库存集合
				for (ListenRawstockStock listenRawstockStock : rtList) {
					//材料库存赋值
					bofVo.setRawstockNumber(listenRawstockStock.getRawstockNumber());
				}
				bofVoList.add(bofVo);
			}
			
		}
		
		return bofVoList;
	}

}
